import 'package:url_launcher/url_launcher.dart';

import 'toast_util.dart';

/// <summary>
/// todo: 操作URL
/// author：zwb
/// dateTime：2021/9/2 15:10
/// filePath：lib/utils/open_util.dart
/// desc:
/// <summary>
///
class OpenUrlUtil {

  /// 打开app [schemes]
  static open(String schemes) async {
    if(schemes == "") return;
    // Android 30以上 需要在AndroidManifest 注册相应应用的协议地址，否则永远return false
    // 例如：
    // <queries>
    //   <intent>
    //     <action android:name="android.intent.action.DIAL" />
    //     <data android:scheme="tel" />
    //   </intent>
    //   <intent>
    //     <action android:name="android.intent.action.SEND" />
    //     <data android:mimeType="*/*" />
    //   </intent>
    // </queries>
    //
    // ios 则需在 Info.plist文件中的 LSApplicationQueriesSchemes 配置相应的schemes
    // 例如：
    // <key>LSApplicationQueriesSchemes</key>
    // <array>
    // <string>https</string>
    // <string>http</string>
    // </array>
    if (await canLaunch(schemes))
      openLaunch(schemes);
    else
      toast("请检查是否安装相关程序");
  }

  static openLaunch(String schemes) async => await launch(schemes);

  /// 打开拨号盘 [schemes] 手机号
  /// 例如：tel: 15712345678
  static tel(String schemes){
    if(schemes == "") return;
    openLaunch("tel:"+schemes);
  }

  /// 打开短信编辑 [schemes] 手机号
  /// 例如：sms:5550101234
  static sms(String schemes){
    if(schemes == "") return;
    openLaunch("sms:"+schemes);
  }

  /// 打开邮件发送  [schemes] 邮件地址+内容
  /// 例如：mailto:smith@example.org?subject=News&body=New%20plugin
  static mailto(String schemes){
    if(schemes == "") return;
    openLaunch("mailto:"+schemes);
  }
}
